perm filename TALK[4,KMC]1 blob
sn#006455 filedate 1971-06-07 generic text, type T, neo UTF8
00010 BEGIN NEW EOF, FILE1, FILE2; SPECIAL EOF, FILE1, FILE2;
00020
00030 % TO RECONSTRUCT THE TALK CORE IMAGE:
00040
00050 .R MLISPC ( COMPILE TALK. )
00060 *(MLISP TALK T)
00070 *↑C
00080
00090 .R LISP 14 ( READ IN THE LAP CODE. )
00100 ALLOC? Y
00110 FULL WDS=_ ( _ MEANS <SPACE> )
00120 BIN.PROG.SP=3000_
00130 SPEC.PDL=_
00140 REG. PDL=_
00150 HASH=_
00160 *(DSKIN SYS: LAP DSK: (TALK.LAP) (2 DAV) (MAIL.FNS) SYS: UTILS)
00170 *↑C
00180 .SAVE TALK00
00190
00200 TO RUN THE PROGRAM, TYPE
00210 .RUN TALK00[1,SYL]
00220 *(RESTART)
00230 %
00240
00250
00260 FEXPR OUT (L); % L = (DESTINATION FUNCTION OPEN CLOSE) %
00270 IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, L[2]) ELSE
00280 IF L[1] EQ 'OWN THEN EVAL L[2]
00290 ELSE BEGIN
00300 IF LENGTH L ≥ 3 & L[3] THEN EVAL <'OUTPUT, 'DSK:, EVAL L[1]>;
00310 OUTC(T, NIL);
00320 EVAL L[2];
00330 OUTC(NIL, IF LENGTH L = 4 THEN L[4] ELSE NIL);
00340 END;
00350
00360 FEXPR INP (L); % L = (SOURCE FUNCTION) %
00370 IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, <'SEND_MAIL, '(QUOTE TALK00), L[2]>) ALSO WAIT_FOR_MAIL(L[3])
00380 ELSE EVAL L[2];
00390
00400 EXPR READ_MESSAGE ();
00410 BEGIN NEW L;
00420 PRINTSTR "READY:";
00430 TERPRI TERPRI DO NIL UNTIL CAR(L ← READCH() CONS L) EQ ALTMODE & CADR L EQ ALTMODE;
00440 RETURN READLIST('?" CONS REVERSE('?" CONS CDDR L))
00450 END;
00460
00470 EXPR PRINT_MESSAGE (MESSAGE); TERPRI TERPRI FOR NEW CH IN MESSAGE DO PRINC CH;
00480
00490 EXPR PRINT_ALL (FILE); % COPIES FILE "FILE" TO THE CURRENTLY OPEN OUTPUT FILE. %
00500 BEGIN NEW CH;
00510 EVAL <'INC, <'INPUT, FILE, 'DSK:, FILE>, NIL>;
00520 DO NIL UNTIL TYO TYI() EQ OCTAL 45 & (ATOM(CH ← ERRSET(READCH(),T)) | PRINC CAR CH & NIL);
00530 INC(NIL,T)
00540 END;
00010 %##########################################################################################%
00020 %######################## EXECUTION BEGINS HERE #########################%
00030 %##########################################################################################%
00040
00050 EOF ← PERCENT; % THE END-OF-FILE CHARACTER %
00060
00070 PRINTSTR "WHAT DISK FILE DO YOU WANT THIS INTERVIEW SAVED ON? (5 LETTERS ONLY)";
00080 FILE1 ← READ();
00090 FILE2 ← AT(SUBSTR(FILE1,1,5) CAT "A"); % OUTPUT ALTERNATES BETWEEN THESE TWO. %
00100 OUT(FILE1, NIL, T); % INITIALIZATION %
00110
00120
00130 WHILE T DO
00140 BEGIN NEW MESSAGE, VALUES; SPECIAL MESSAGE, VALUES;
00150 IF ¬JOB_EXISTS('DOCJOB) THEN
00160 BEGIN
00170 PRINTSTR "THE DOCTOR HAS NOT STARTED RUNNING 'DOCJOB' YET.";
00180 DO SLEEP(30) UNTIL JOB_EXISTS('DOCJOB) | PROG2(PRINTSTR "STILL HASN'T STARTED 'DOCJOB'", NIL);
00190 TERPRI PRINTSTR "OK, HE JUST STARTED IT.";
00200 SLEEP(30) % MAKE SURE HE HAS TIME TO START IT UP. %
00210 END;
00220
00230 MESSAGE ← INP(DOC, READ_MESSAGE(), NIL);
00240 OUT(OWN, TERPRI PRINTSTR MESSAGE);
00250 OUT(FILE1, TERPRI PRINTSTR TERPRI TERPRI MESSAGE);
00260
00270 MESSAGE ← INP(OWN, READ_MESSAGE());
00280 OUT(FILE1, PRINTSTR MESSAGE);
00290 VALUES ← EVAL <'INP, 'DOC,
00300 <'PROG, '(X),
00310 <'PRINTSTR, <'QUOTE, AT MESSAGE>>,
00320 '(PRINT (QUOTE RESPONSE:)),
00330 '(CLEAR_BUFFER),
00340 '(SETQ X (READ)),
00350 '(PRINT (QUOTE PATIENT:)),
00360 '(CLEAR_BUFFER),
00370 '(RETURN (LIST (QUOTE RESPONSE) X (QUOTE PATIENT) (TERPRI (TERPRI (READ)))))>>;
00380 OUT(FILE1, PROG2(PRINT VALUES, PRINC TERPRI EOF), NIL, T);
00390 SAVEJOB('TALK00,'SAV); % SAVE THE CORE IMAGE UNDER TALK00.SAV IN CASE THE SYSTEM GOES DOWN. %
00400
00410 % THIS IS THE POINT AT WHICH THE PROGRAM WILL START IF THE SYSTEM GOES DOWN. %
00420 '(FILE1 FILE2) ←⊗ <FILE2, FILE1>; % ROTATE THE OUTPUT FILES. %
00430 OUT(FILE1, PRINT_ALL FILE2, T);
00440 END;
00450
00460
00470 END.